<?php

namespace Jinxing\Admin\Repositories;

use Illuminate\Support\Facades\DB;
use Jinxing\Admin\Models\RoleMenus;
use Littlebug\Repository\Repository;

class RoleMenusRepository extends Repository
{
    public function __construct(RoleMenus $model)
    {
        parent::__construct($model);
    }

    /**
     * 修改角色的菜单信息
     *
     * @param integer      $role_id  角色ID
     * @param string|array $menu_ids 菜单ID信息
     *
     * @return boolean
     * @throws \Throwable
     */
    public function updateMenus($role_id, $menu_ids)
    {
        // 处理新增数据信息
        $menu_ids = MenuRepository::instance()->findAllHasIds($menu_ids);

        return DB::transaction(function () use ($role_id, $menu_ids) {
            $this->delete(['role_id' => $role_id]);

            $insert = [];
            // 添加超级管理员角色
            foreach ($menu_ids as $menu_id) {
                if (empty($menu_id)) {
                    continue;
                }

                $insert[] = compact('role_id', 'menu_id');
            }

            return $this->insert($insert);
        });
    }
}
